//
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.fasterxml.jackson.databind.SerializationFeature;
//import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
//
//import com.test.Utils.CsvReader;
//import com.test.entity.StockTrade;
//import com.test.service.*;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.kafka.clients.producer.ProducerConfig;
//import org.apache.kafka.common.serialization.StringSerializer;
//import org.springframework.kafka.core.DefaultKafkaProducerFactory;
//import org.springframework.kafka.core.KafkaTemplate;
//
//import java.io.IOException;
//import java.io.InputStream;
//import java.util.HashMap;
//import java.util.Iterator;
//import java.util.List;
//import java.util.Map;
//
//@Slf4j
//public class Main {
//
//    private static final String TOPIC = "stock-trades-";
//
//    public static void main(String[] args) throws IOException {
//        // 初始化 KafkaTemplate
//        Map<String, Object> props = new HashMap<>();
//        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.88.135:19092,192.168.88.135:29092,192.168.88.135:39092");
//        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
//        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
//
//        KafkaTemplate<String, String> kafkaTemplate = new KafkaTemplate<>(new DefaultKafkaProducerFactory<>(props));
//
//        // 初始化 ObjectMapper
//        ObjectMapper objectMapper = new ObjectMapper();
//        objectMapper.registerModule(new JavaTimeModule());
//        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
//
//        // 通过类加载器获取 resources 目录下 CSV 文件的输入流
//        InputStream inputStream = Main.class.getClassLoader().getResourceAsStream("1.csv");
//        if (inputStream == null) {
//            log.error("无法找到 resources 目录下的 CSV 文件");
//            return;
//        }
//
//        // 调用 CsvReader.readCsv 方法获取 StockTrade 列表，将输入流传入
//        List<StockTrade> trades = CsvReader.readCsv(inputStream);
//        if (trades == null) {
//            log.error("读取 CSV 文件失败，无法获取数据");
//            return;
//        }
//
//        Iterator<StockTrade> tradeIterator = trades.iterator();
//        while (tradeIterator.hasNext()) {
//            try {
//                StockTrade trade = tradeIterator.next();
//                String message = objectMapper.writeValueAsString(trade);
//                kafkaTemplate.send(TOPIC, message);
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//
//        new Thread(() -> {
//            try {
//                StockSellAndBuy.main(null);
//            } catch (Exception e) {
//                log.error("Error starting Flink job", e);
//            }
//        }).start();
//        new Thread(() -> {
//            try {
//                StockTradeAnalysis.main(null);
//            } catch (Exception e) {
//                log.error("Error starting Flink job", e);
//            }
//        }).start();
//        new Thread(() -> {
//            try {
//                TopTenPlatform.main(null);
//            } catch (Exception e) {
//                log.error("Error starting Flink job", e);
//            }
//        }).start();
//        new Thread(() -> {
//            try {
//                TopTenStock.main(null);
//            } catch (Exception e) {
//                log.error("Error starting Flink job", e);
//            }
//        }).start();
//        new Thread(() -> {
//            try {
//                TopTradePlace.main(null);
//            } catch (Exception e) {
//                log.error("Error starting Flink job", e);
//            }
//        }).start();
//        new Thread(() -> {
//            try {
//                TradeCal.main(null);
//            } catch (Exception e) {
//                log.error("Error starting Flink job", e);
//            }
//        }).start();
//    }
//}